package com.ruoyi.modularbusiness.service.impl;

import java.util.ArrayList;
import java.util.List;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.ruoyi.common.core.constant.SecurityConstants;
import com.ruoyi.common.core.utils.DateUtils;
import com.ruoyi.modularbusiness.domain.VO.AubitTypeVo;
import com.ruoyi.system.api.RemoteSysDeptService;
import com.ruoyi.system.api.domain.SysDept;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.modularbusiness.mapper.AubitTypeMapper;
import com.ruoyi.modularbusiness.domain.AubitType;
import com.ruoyi.modularbusiness.service.IAubitTypeService;

/**
 * 签核类型Service业务层处理
 *
 * @author liuzhen
 * @date 2023-03-04
 */
@Service
public class AubitTypeServiceImpl implements IAubitTypeService {
    @Autowired
    private AubitTypeMapper aubitTypeMapper;

    @Autowired
    private RemoteSysDeptService remoteSysDeptService;


    //根据部门ID、单据ID 查询签核流程
    @Override
    public List<AubitTypeVo> Getaubittype_vo(AubitType aubitType) {
        List<AubitTypeVo> list = aubitTypeMapper.Getaubittype_vo(aubitType);
//        System.out.println(list);
        if (list.size() < 1) {
            String deptId = aubitType.getAtp_sector();
            List<?> lists = remoteSysDeptService.listgetid(Long.parseLong(deptId), SecurityConstants.INNER);
            List<SysDept> listdata = (List<SysDept>) lists;
            String jsonObject = JSON.toJSONString(listdata.get(0));
            SysDept sysDept = JSONObject.parseObject(jsonObject, SysDept.class);
            String[] parlist = sysDept.getAncestors().split(",");
            for (int i2 = parlist.length - 1; i2 >= 0; i2--) {
                AubitType demos = aubitType;
                demos.setAtp_sector(parlist[i2]);
                List<AubitTypeVo> listdemo = aubitTypeMapper.Getaubittype_vo(aubitType);
                if (listdemo.size() > 0) {
                    list = listdemo;
                    break;
                }
            }
        }
        List<AubitTypeVo> listdemo = new ArrayList<>();
        for (int i = 0; i < list.size(); i++) {
            if (list.get(i).getPostid() == null || list.get(i).getPostid().equals("")) continue;
            String[] demo = list.get(i).getPostid().split(",");
            for (int j = 0; j < demo.length; j++) {
                if (demo[j].equals(aubitType.getPostid())) {
                    listdemo.add(list.get(i));
                }
            }
        }
        if (listdemo.size() < 1) {
            for (int i = 0; i < list.size(); i++) {
                if (list.get(i).getPostid() == null || list.get(i).getPostid().equals("")) {
                    listdemo.add(list.get(i));
                }
            }
        }
        System.out.println(listdemo);
        return listdemo;
    }

    /**
     * 查询签核类型
     *
     * @param atpId 签核类型主键
     * @return 签核类型
     */
    @Override
    public AubitType selectAubitTypeByAtpId(Long atpId) {
        AubitType aubitType = aubitTypeMapper.selectAubitTypeByAtpId(atpId);
        if (aubitType.getPostid() != null && aubitType.getPostid() != "" && !aubitType.getPostid().equals("")) {
            String[] listid = aubitType.getPostid().split(",");
            Long[] list = new Long[listid.length];
            for (int i = 0; i < listid.length; i++) {
                list[i] = Long.parseLong(listid[i]);
            }
            aubitType.setPostlist(list);
        } else {
            aubitType.setPostid(null);
        }
        return aubitType;
    }

    /**
     * 查询签核类型列表
     *
     * @param aubitType 签核类型
     * @return 签核类型
     */
    @Override
    public List<AubitType> selectAubitTypeList(AubitType aubitType) {
        return aubitTypeMapper.selectAubitTypeList(aubitType);
    }

    /**
     * 新增签核类型
     *
     * @param aubitType 签核类型
     * @return 结果
     */
    @Override
    public int insertAubitType(AubitType aubitType) {
//        AubitType demos = new AubitType();
//        demos.setAtp_sector(aubitType.getAtp_sector());
//        demos.setAtp_form(aubitType.getAtp_form());
//        List<AubitType> list = aubitTypeMapper.selectAubitTypeList(demos);
//        if (list.size() > 0) {
//            return 0;
//        } else {
        aubitType.setCreateTime(DateUtils.getNowDate());
        return aubitTypeMapper.insertAubitType(aubitType);
//        }
    }

    /**
     * 修改签核类型
     *
     * @param aubitType 签核类型
     * @return 结果
     */
    @Override
    public int updateAubitType(AubitType aubitType) {
//        AubitType demos = new AubitType();
//        demos.setAtp_sector(aubitType.getAtp_sector());
//        demos.setAtp_form(aubitType.getAtp_form());
//        List<AubitType> list = aubitTypeMapper.selectAubitTypeList(demos);
//        if (list.size() > 0) {
//            if (list.size() == 1) {
//                AubitType demop = list.get(0);
//                if (aubitType.getAtpId().toString().equals(demop.getAtpId().toString())) {
//                    aubitType.setUpdateTime(DateUtils.getNowDate());
//                    return aubitTypeMapper.updateAubitType(aubitType);
//                } else {
//                    return 0;
//                }
//            } else {
//                return 0;
//            }
//        } else {
        aubitType.setUpdateTime(DateUtils.getNowDate());
        return aubitTypeMapper.updateAubitType(aubitType);
//        }
    }

    /**
     * 批量删除签核类型
     *
     * @param atpIds 需要删除的签核类型主键
     * @return 结果
     */
    @Override
    public int deleteAubitTypeByAtpIds(Long[] atpIds) {
        return aubitTypeMapper.deleteAubitTypeByAtpIds(atpIds);
    }

    /**
     * 删除签核类型信息
     *
     * @param atpId 签核类型主键
     * @return 结果
     */
    @Override
    public int deleteAubitTypeByAtpId(Long atpId) {
        return aubitTypeMapper.deleteAubitTypeByAtpId(atpId);
    }
}
